#ifndef DEVELOPMENTCARD_H_
#define DEVELOPMENTCARD_H_

#include <vector>

namespace catan
{

class DevelopmentCard
{
//this class defines the development cars that will be used in the game. Verify the enum
public:
	enum Enum_DevelopmentCard { SOLDIER_CARD, MONOPOLY_CARD, ROAD_BUILDING_CARD, YEAR_OF_PLENTY_CARD, MARKET_CARD, LIBRARY_CARD, UNIVERSITY_CARD, GOVERNORS_HOUSE_CARD, CHAPEL_CARD };
	
	static const std::vector<Enum_DevelopmentCard> &getVectorOfPossibleEnumValues();
	static const std::vector<Enum_DevelopmentCard> &getVectorOfSortedEnumValues();
	static const std::vector<Enum_DevelopmentCard> &getVectorOfShuffledEnumValues();
	static bool canInit(Enum_DevelopmentCard enumDevelopmentCard);
	
	explicit DevelopmentCard(Enum_DevelopmentCard enumDevelopmentCard);
	Enum_DevelopmentCard getEnum() const;
	bool operator==(const DevelopmentCard &other) const;
	bool operator<(const DevelopmentCard &other) const;
	DevelopmentCard& operator=(const DevelopmentCard& other);
	
private:
	static std::vector<Enum_DevelopmentCard> vectorOfPossibleEnumValues;
	static std::vector<Enum_DevelopmentCard> vectorOfSortedEnumValues;
	static std::vector<Enum_DevelopmentCard> vectorOfShuffledEnumValues;
	
	Enum_DevelopmentCard enumDevelopmentCard;
};

static DevelopmentCard soldierCard(DevelopmentCard::SOLDIER_CARD), monopolyCard(DevelopmentCard::MONOPOLY_CARD), roadBuildingCard(DevelopmentCard::ROAD_BUILDING_CARD), yearOfPlentyCard(DevelopmentCard::YEAR_OF_PLENTY_CARD), marketCard(DevelopmentCard::MARKET_CARD), libraryCard(DevelopmentCard::LIBRARY_CARD), universityCard(DevelopmentCard::UNIVERSITY_CARD), governorsHouseCard(DevelopmentCard::GOVERNORS_HOUSE_CARD), chapelCard(DevelopmentCard::CHAPEL_CARD);

}

#endif /*DEVELOPMENTCARD_H_*/
